/*********************************************************************************************************
*
* 被管主机日志采集模块。
* 监听agent向server端发日志的端口（默认为5210），将接收到的内容保存在server端，形成被管主机日志，
* 检测被管主机的当前状态/级别，并将日志等信息入库。
*
*********************************************************************************************************/

#ifndef WY_COLLECTOR_H
#define WY_COLLECTOR_H

#include <msg.h>

#define LOG_PATH	"../../../log/"			//主机操作日志的路径
#define LOG_REMOTE	"remote/%s.txt"		//日志的文件名，%s -> 主机名
#define LOG_FORMAT	"[%s]\t%s\tHOST:%s %s %s %s\n"	//记录日志的格式：
							//[LEVEL]	TIME	主机：HOST OPT1 OPT2 DATA\n
							//[WARN]	2011/04/10 08:23:12	HOST:SWITCH RUN OPRN thunder.exe\n
#define TIME_FORMAT	"%d/%02d/%02d %02d:%02d:%02d"	//日志中日期时间的格式
#define PATH_MAX_LEN	64				//日志路径的最大长度
#define HOST_MAX_LEN	32				//主机名的最大长度，当这个宏更新的时候，../include/hostmap.h里的HOST_MAX_LEN宏也要更新。
#define LV_MAX_LEN	6				//主机状态级别的长度
#define TIME_STR_LEN	20				//时间字符串的长度
#define OPT_STR_LEN	10
/*主机操作动作的字符串*/
#define OPT_STR_POWER		"POWER ON"
#define OPT_STR_SHUTDOWN	"POSER OFF"
#define OPT_STR_LOGOUT		"LOGOUT"
#define OPT_STR_RUN		"RUN"
#define OPT_STR_SURF		"SURF"
#define OPT_STR_OPEN		"OPEN"
#define OPT_STR_CLOSE		"CLOSE"
/*主机状态级别*/
#define OPT_STR_LV_OK		"OK"
#define OPT_STR_LV_WARN		"WARN"
#define OPT_STR_LV_ERROR	"ERROR"

/*处理远程日志，从socket中读取主机日志，并将日志保存在log/remote目录下，然后将日志入库。*/
/*读取Agent传来的日志信息。*/
static int read_remote_log(int sockfd, struct msg_host_opt_st **opt, int *opt_size);
/*将日志保存在server端，并入库。*/
static int save_remote_log(struct msg_host_opt_st **opt, int *opt_size);
/*释放结构体struct msg_host_opt_st指针*/
static void free_opt(struct msg_host_opt_st **opt, const int opt_size);
/*子进程收僵尸信号处理函数。*/
static void chld_handler(int s);

#endif

